/*
 * $Id: $
 */
package org.rcgwt.client.ui.grid.controller;

import org.rcgwt.client.ui.grid.internal.model.IElementModel;
import org.rcgwt.client.ui.grid.internal.model.IGridEventManager;
import org.rcgwt.client.ui.grid.model.IGridWidget;
import org.rcgwt.client.ui.grid.renderer.IViewRenderContext;

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.Event;

/**
 * 
 * @author Olivier Oeuillot (latest modification by $Author: $)
 * @version $Revision: $ $Date: $
 */
public interface IGridModelController {

	void installElementEventsListener(IViewRenderContext viewRenderContext,
			IElementModel elementModel, Element keysEventsElement,
			Element scrollEventElement);

	void onBrowserEvent(IGridWidget gridWidget, Event event);

	// void onModelSelectionEvent(SelectionEvent<ISelectionState> event);

	// void updateSelectionControl();

	IGridEventManager getGridEventManager(IGridWidget gridWidget);

	void setCaptureEventListener(ICaptureEventListener captureEventListener);

	void releaseCapture(ICaptureEventListener captureEventListener);

	void giveFocus(IGridWidget gridWidget, IElementModel elementModel,
			Event event);

	/*
	 * void onLoad(IGridRenderContext gridRenderContext, IGridModel gridModel);
	 * 
	 * void onUnload(IGridRenderContext gridRenderContext, IGridModel
	 * gridModel);
	 * 
	 * void onBrowserEvent(Event event, IGridRenderContext gridRenderContext);
	 * 
	 * void onModelSelectionEvent(IGridRenderContext gridRenderContext,
	 * SelectionEvent<ISelectionState> event);
	 * 
	 * void onModelElementMouseMoveEvent(IGridRenderContext gridRenderContext,
	 * IElementModel overModelElement, IViewModel view);
	 * 
	 * void onModelElementMouseOverEvent(IElementModel overModelElement);
	 * 
	 * void onModelElementMouseOutEvent(IGridRenderContext gridRenderContext,
	 * IElementModel overModelElement);
	 */
}
